#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main(){
  int n,m;
  cin>>n>>m;
  vector<vector<int>> s(n+2,vector<int>(n+2,0));
  vector<vector<int>> a(n+2,vector<int>(n+2,0));
  while(m--){
    int x1,y1,x2,y2;
    cin>>x1>>y1>>x2>>y2;
    a[x1][y1]^=1;
    a[x2+1][y2+1]^=1;
    a[x2+1][y1]^=1;
    a[x1][y2+1]^=1;
  }
  for(int i=1;i<=n;i++){
    for(int j=1;j<=n;j++){
      s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
      cout<<(s[i][j]&1);
    }
    cout<<endl;
  }

  return 0;
}


//题目：棋盘
//
//描述：
//一个n*n的棋盘，开始的时候，棋盘上都是白子。小蓝对棋盘进行了m次操纵，每次操作都使棋盘上某个矩形区域内的所有棋子颜色取反（黑色变成白色，白色变成黑色）。
// 请输出所有操作完成后棋盘上每个棋子的颜色。
//输入格式
//第一行，两个正整数n和m，分别表示棋盘尺寸和操作次数。
//接下来m行，每行四个数，x1,y1,x2,y2，分别表示每次操作的矩形区域的左下角和右上角。
//输出格式
//共n行，每行n个数，0或者1。0表示白色，1表示黑色。数之间没有间隔。行尾和行首没有空格。
//输入样例
// 3 3
// 1 1 2 2
// 2 2 3 3
// 1 1 3 3
//输出样例
//001
//010
//100